package com.entmanage.base.achievement.domain;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.entmanage.common.annotation.Excel;
import com.entmanage.common.core.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

/**
 * 成果展示案例对象 achievement_cases
 *
 * @author lsq
 * @date 2025-08-25
 */
@ApiModel(value = "AchievementCases", description = "成果展示案例对象")
public class AchievementCases extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 主键ID，自增 */
    @ApiModelProperty(value = "主键ID，自增")
    private Long id;

    /** 案例标题，如“XX品牌升级设计” */
    @Excel(name = "案例标题，如“XX品牌升级设计”")
    @ApiModelProperty(value = "案例标题，如“XX品牌升级设计”")
    private String title;

    /** 副标题或简短描述，用于列表页展示 */
    @Excel(name = "副标题或简短描述，用于列表页展示")
    @ApiModelProperty(value = "副标题或简短描述，用于列表页展示")
    private String subtitle;

    /** 封面图URL，用于首页轮播和列表展示 */
    @Excel(name = "封面图URL，用于首页轮播和列表展示")
    @ApiModelProperty(value = "封面图URL，用于首页轮播和列表展示")
    private String coverImage;

    /** 客户名称，如“智远科技有限公司” */
    @Excel(name = "客户名称，如“智远科技有限公司”")
    @ApiModelProperty(value = "客户名称，如“智远科技有限公司”")
    private String clientName;

    /** 客户类型：企业/学校/个人/政府机构 */
    @Excel(name = "客户类型：企业/学校/个人/政府机构")
    @ApiModelProperty(value = "客户类型：企业/学校/个人/政府机构")
    private String clientType;

    /** 客户LOGO图片URL，用于增强品牌展示 */
    @Excel(name = "客户LOGO图片URL，用于增强品牌展示")
    @ApiModelProperty(value = "客户LOGO图片URL，用于增强品牌展示")
    private String clientLogo;

    /** 服务类别，如“品牌设计”、“软件开发”、“UI/UX设计” */
    @Excel(name = "服务类别，如“品牌设计”、“软件开发”、“UI/UX设计”")
    @ApiModelProperty(value = "服务类别，如“品牌设计”、“软件开发”、“UI/UX设计”")
    private String serviceCategory;

    /** 项目周期，格式如“2024.01 - 2024.03” */
    @Excel(name = "项目周期，格式如“2024.01 - 2024.03”")
    @ApiModelProperty(value = "项目周期，格式如“2024.01 - 2024.03”")
    private String projectDuration;

    /** 标签数组，如["创新", "数字化", "获奖项目"]，便于前端展示或筛选 */
    @Excel(name = "标签数组，便于前端展示或筛选")
    @ApiModelProperty(value = "标签数组，便于前端展示或筛选")
    private String tags;

    /** 类型：about=关于我们，project=项目 */
    @Excel(name = "类型：about=关于我们，project=项目")
    @ApiModelProperty(value = "类型：about=关于我们，project=项目")
    private String type;

    /** 案例详细内容，支持HTML格式（可包含图文、视频嵌入等） */
    @Excel(name = "案例详细内容，支持HTML格式", readConverterExp = "可=包含图文、视频嵌入等")
    @ApiModelProperty(value = "案例详细内容，支持HTML格式（可包含图文、视频嵌入等）")
    private String content;

    /** 阅读量统计，默认为0，每次访问详情页+1 */
    @Excel(name = "阅读量统计，默认为0，每次访问详情页+1")
    @ApiModelProperty(value = "阅读量统计，默认为0，每次访问详情页+1")
    private Long viewCount;

    /** 排序权重，数值越大在列表中越靠前 */
    @Excel(name = "排序权重，数值越大在列表中越靠前")
    @ApiModelProperty(value = "排序权重，数值越大在列表中越靠前")
    private Long sortOrder;

    /** 是否已发布：1=是，0=否（草稿状态） */
    @Excel(name = "是否已发布：1=是，0=否", readConverterExp = "草=稿状态")
    @ApiModelProperty(value = "是否已发布：1=是，0=否（草稿状态）")
    private Integer isPublished;

    /** 是否推荐到首页轮播：1=是，0=否 */
    @Excel(name = "是否推荐到首页轮播：1=是，0=否")
    @ApiModelProperty(value = "是否推荐到首页轮播：1=是，0=否")
    private Integer isFeatured;

    /** 创建时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "创建时间")
    private Date createdAt;

    /** 最后更新时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "最后更新时间", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "最后更新时间")
    private Date updatedAt;

    /** 系统用户id */
    @Excel(name = "系统用户id")
    @ApiModelProperty(value = "系统用户id")
    private Long userId;

    /** 部门id */
    @Excel(name = "部门id")
    @ApiModelProperty(value = "部门id")
    private Long deptId;

    public void setId(Long id)
    {
        this.id = id;
    }

    public Long getId()
    {
        return id;
    }
    public void setTitle(String title)
    {
        this.title = title;
    }

    public String getTitle()
    {
        return title;
    }
    public void setSubtitle(String subtitle)
    {
        this.subtitle = subtitle;
    }

    public String getSubtitle()
    {
        return subtitle;
    }
    public void setCoverImage(String coverImage)
    {
        this.coverImage = coverImage;
    }

    public String getCoverImage()
    {
        return coverImage;
    }
    public void setClientName(String clientName)
    {
        this.clientName = clientName;
    }

    public String getClientName()
    {
        return clientName;
    }
    public void setClientType(String clientType)
    {
        this.clientType = clientType;
    }

    public String getClientType()
    {
        return clientType;
    }
    public void setClientLogo(String clientLogo)
    {
        this.clientLogo = clientLogo;
    }

    public String getClientLogo()
    {
        return clientLogo;
    }
    public void setServiceCategory(String serviceCategory)
    {
        this.serviceCategory = serviceCategory;
    }

    public String getServiceCategory()
    {
        return serviceCategory;
    }
    public void setProjectDuration(String projectDuration)
    {
        this.projectDuration = projectDuration;
    }

    public String getProjectDuration()
    {
        return projectDuration;
    }
    public void setTags(String tags)
    {
        this.tags = tags;
    }

    public String getTags()
    {
        return tags;
    }
    public void setType(String type)
    {
        this.type = type;
    }

    public String getType()
    {
        return type;
    }
    public void setContent(String content)
    {
        this.content = content;
    }

    public String getContent()
    {
        return content;
    }
    public void setViewCount(Long viewCount)
    {
        this.viewCount = viewCount;
    }

    public Long getViewCount()
    {
        return viewCount;
    }
    public void setSortOrder(Long sortOrder)
    {
        this.sortOrder = sortOrder;
    }

    public Long getSortOrder()
    {
        return sortOrder;
    }
    public void setIsPublished(Integer isPublished)
    {
        this.isPublished = isPublished;
    }

    public Integer getIsPublished()
    {
        return isPublished;
    }
    public void setIsFeatured(Integer isFeatured)
    {
        this.isFeatured = isFeatured;
    }

    public Integer getIsFeatured()
    {
        return isFeatured;
    }
    public void setCreatedAt(Date createdAt)
    {
        this.createdAt = createdAt;
    }

    public Date getCreatedAt()
    {
        return createdAt;
    }
    public void setUpdatedAt(Date updatedAt)
    {
        this.updatedAt = updatedAt;
    }

    public Date getUpdatedAt()
    {
        return updatedAt;
    }
    public void setUserId(Long userId)
    {
        this.userId = userId;
    }

    public Long getUserId()
    {
        return userId;
    }
    public void setDeptId(Long deptId)
    {
        this.deptId = deptId;
    }

    public Long getDeptId()
    {
        return deptId;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
                .append("id", getId())
                .append("title", getTitle())
                .append("subtitle", getSubtitle())
                .append("coverImage", getCoverImage())
                .append("clientName", getClientName())
                .append("clientType", getClientType())
                .append("clientLogo", getClientLogo())
                .append("serviceCategory", getServiceCategory())
                .append("projectDuration", getProjectDuration())
                .append("tags", getTags())
                .append("type", getType())
                .append("content", getContent())
                .append("viewCount", getViewCount())
                .append("sortOrder", getSortOrder())
                .append("isPublished", getIsPublished())
                .append("isFeatured", getIsFeatured())
                .append("createdAt", getCreatedAt())
                .append("updatedAt", getUpdatedAt())
                .append("userId", getUserId())
                .append("deptId", getDeptId())
                .append("createBy", getCreateBy())
                .append("updateBy", getUpdateBy())
                .append("remark", getRemark())
                .toString();
    }
}
